<?

error_reporting(E_ERROR|E_PARSE);

/* Inicializo
*********************************************************************************************************************/

include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/loader.inc.php");


// Tomo los datos
$data = $_REQUEST['data'];

// Instancio la clase
$dominios = new Dominios();

// Defino los criterios de busqueda
$criterios = array(
	"tramite" => array("filtro" => "id_tramite LIKE '%|param|%'"),
	"dominio" => array("filtro" => "dominio LIKE '%|param|%'"),
	"estado" => array("filtro" => "d.id_estado = '|param|'"),
	"pendiente" => array("filtro" => "pendiente = '|param|'"),
	"nacional" => array("filtro" => "nacional = '|param|'"),
);

$tramites = $dominios->tramites();

$estados = $dominios->estados();

// Defino las provincias
$provincias = array(
	'Ciudad de Buenos Aires',
	'Buenos Aires',
	'Catamarca',
	'Chaco',
	'Chubut',
	'Cordoba',
	'Corrientes',
	'Entre Rios',
	'Formosa',
	'Jujuy',
	'La Pampa',
	'La Rioja',
	'Mendoza',
	'Misiones',
	'Neuquen',
	'Rio Negro',
	'Salta',
	'San Juan',
	'San Luis',
	'Santa Cruz',
	'Santa Fe',
	'Santiago del Estero',
	'Tierra del Fuego',
	'Tucuman'
);


// Defino los tipos de documentos
$tipos_documentos = array('DNI', 'LE', 'LC', 'CUIT', 'CUIL');


/* Obtengo los datos
*********************************************************************************************************************/

// Tomo la accion
$accion = 'listar';
if ($_REQUEST['mode'])
	$accion = addslashes($_REQUEST['mode']);
	
// Tomo el ID
if ($_REQUEST['id'])
	$id = addslashes($_REQUEST['id']);

// Tomo los parametros
if ($_REQUEST['params']) {
	$params_string = addslashes($_REQUEST['params']);
	$params = Funciones::getparams($params_string);
} else {
/*
	$params = array(
		'pendiente' => 1,
		'nacional' => 1
	);
*/
}

// Tomo el aviso, en caso de haberlo
$error = $session->getFlash();
$aviso = json_decode($error, true);
$verbo = $aviso['accion'];
// Agrupo los exitos si hay mas de uno
if ($aviso['exito']) {
	if (count($aviso['exito']) > 1) {
		$exito_global = count($aviso['exito']) . ' dominios se han podido ' . $verbo . ' con &eacute;xito';
	}
}
// Armo la url actual
$url_origen = '/sic/plugins/dominios/' . $accion . '/' . $params_string;

// Trato de unserializar el error
$error = unserialize($error);



/* Acciones
*********************************************************************************************************************/

// Cambio el nombre de la persona
if ($accion == 'buscarpersona') {

	$dominios->modificar($_POST['dominio'], array('nombre' => $_POST['persona']));

	// Mensaje de exito
	$session->setFlash(serialize(array('exito' => 'Se actualizo el nombre de la persona responsable con exito')));

	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
	exit;
}

// Renovar
if ($accion == 'renovar') {

	// Instancio la clase de nic
	$Nic = new Nic();

	// Trato de renovar el dominio
	if (!$Nic->renovar($_POST['dominio'], $_POST['datos']))
		$session->setFlash(serialize(array('error' => $Nic->error())));
	else {

		// Mensaje de exito
		$session->setFlash(serialize(array('exito' => 'El dominio se renovo con exito')));

		// Marco el dominio como finalizado
		$dominios->finalizado($_POST['dominio']);
	}

	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
	exit;
}

// Importar datos
if ($accion == 'importar_datos') {

	// Importo los datos del dominio
	if (!$dominios->importar_datos($_POST['dominio'], $_POST['id_noc']))
		$session->setFlash(serialize(array('error' => $dominios->error())));
	else 
		// Mensaje de exito
		$session->setFlash(serialize(array('exito' => 'Se importaron los datos del dominio con exito')));

	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
	exit;
}

// Registrar
if ($accion == 'registrar') {

	// Instancio la clase de nic
	$Nic = new Nic();

	// Pido los datos del dominio
	$datos = $dominios->datos($dominios->id($_POST['dominio']));

	// Si me mando datos, los mergeo con los que obtuve
	if ($_POST['datos'])
		$datos['datos'] = array_merge($datos['datos'], $_POST['datos']);

	// Registro el dominio
	if ($Nic->registrar($_POST['dominio'], $datos['datos'])) {
		$dominios->cambiar_estado(2, $_POST['dominio']);

		// Instancio dominios
		$Dominios = Dominios::getInstance();

		// Obtengo los datos del dominio
		$datos = $Dominios->datos($Dominios->id($_POST['dominio']));

		// Genero el caso para este dominio si no estaba creado
		$id_caso = $datos['id_caso'];
		if (!$id_caso) {

			// Instancio Casos
			$Casos = Casos::getInstance();

			// Creo el array con la informacion del caso
			$caso = array(
				'caso' => array(
					'sso'				=> $datos['datos']['mail'],
					'id_area'			=> 2,
					'asunto'			=> 'Procesamiento del dominio '.$_POST['dominio'].' en Nic.ar',
				),
				'tags' => array(76),
			);
			// Agrego el caso
			if (!($id_caso = $Casos->agregar($caso)))
				'<pre>No se pudo crear el caso</pre>';

			// Asocio el dominio con este caso
			$dominios->id_caso($id_caso, $_POST['dominio']);

		}

		// Instancio Mensajes
		$Mensajes = Mensajes::getInstance();

		// Agrego el mail como un mensaje nuevo
		$mensaje = array(
			'mensaje' => array(
				'sso' 			=> $datos['datos']['mail'],
				'id_usuario' 	=> 0,
				'saliente' 		=> 0,
				'remitente' 	=> 'nic@elserver.com',
				'destinatario' 	=> 'clientes@elserver.com',
				'asunto' 		=> 'Formulario de registro de '.$_POST['dominio'].' enviado con exito',
				'charset'		=> 'utf-8',
				'contenido' 	=> $Nic->content,
				'id_origen' 	=> 1,
			),
		);

		// Creo el mensaje
		if (!$id_mensaje = $Mensajes->agregar($mensaje, $id_caso))
			echo $Mensajes->error();

		// Cierro el caso
		$Caso = Caso::getInstance();
		$Caso->opciones(array('encuesta' => false));
		if (!$Caso->cerrar($id_caso))
			echo '<pre>Error al cerrar el caso: '.$Caso->error().'</pre>';

		// Mensaje de exito
		$session->setFlash(serialize(array('exito' => 'Se completo con exito el formulario de registro de dominio')));

	}
	else {
		$dominios->error_msg($Nic->error(), $_POST['dominio']);
		$session->setFlash(serialize(array('error' => $Nic->error())));
	}

	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
	exit;
}

// Delegar
if ($accion == 'delegar') {

	// Instancio la clase de nic
	$Nic = new Nic();

	// Pido los datos del dominio
	$datos = $dominios->datos($dominios->id($_POST['dominio']));

	// Selecciono el modelo a mandar
	$id_modelo = ($Nic->delegar($_POST['dominio'], $datos['mail']))? 26 : 63;

	// Obtengo el modelo a mandar
	$Modelos = new Modelos();
	$modelo = $Modelos->get($id_modelo, array('DOMINIO' => $_POST['dominio'], 'MAIL' => $datos['mail'], 'NOMBRE' => current(explode(' ', $datos['nombre']))));

	// Genero el caso 
	$casos = Casos::getInstance();
	// Creo el array con la informacion del caso
	$nuevo_caso = array(
		'caso' => array(
			'sso'				=> 'clientes@elserver.com',
			'id_area'			=> 2,
			'asunto'			=> iconv('utf-8', 'iso-8859-1', $modelo['titulo']),
		),
		'tags' => array(76),
		'mensajes' => array (
			array (
				'mensaje' => array(
					'sso' 			=> $datos['datos']['mail'],
					'id_usuario' 	=> 0,
					'saliente' 		=> 1,
					'remitente' 	=> 'clientes@elserver.com',
					'destinatario' 	=> $datos['mail'],
					'asunto' 		=> $modelo['titulo'],
					'charset'		=> 'utf-8',
					'contenido' 	=> $modelo['texto'],
					'id_origen' 	=> 1,
				),
			),
		),
	);
	// Agrego el caso
	if (!($id_caso = $casos->agregar($nuevo_caso)))
		echo '<pre>No se pudo crear el caso</pre>';

	// Cierro el caso
	$caso = Caso::getInstance();
	$caso->opciones(array('encuesta' => false));
	if (!$caso->cerrar($id_caso))
		echo '<pre>Error al cerrar el caso: '.$caso->error().'</pre>';

	echo '<pre>Se creo el caso '.$id_caso.'</pre>';

	// Marco el dominio como finalizado
	$dominios->finalizado($pendiente['dominio']);

	// Mensaje de exito
	$session->setFlash(serialize(array('exito' => 'Se intento delegar el dominio y se le informo al cliente via mail')));

	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
	exit;
}

// Procesar
if ($accion == 'procesar') {

	// Cambio el estado del dominio y lo dejo como pendiente
	$dominios->pendiente($_POST['dominio']);
	$dominios->cambiar_estado(1, $_POST['dominio']);

	// Mensaje de exito
	$session->setFlash(serialize(array('exito' => 'Se marco el dominio como pendiente para procesar')));

	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
	exit;
}


// Agregar
if ($accion == 'agregar') {
	$id = $dominios->agregar($data['dominio'], $data);
	$url = ($listar_dominios_url = $session->get('dominios_listar'))? $listar_dominios_url : '/sic/plugins/dominios/';
	if (!$id) {
		$aviso['error'][] = array('dominio' => $_REQUEST['dominio'], 'texto' => $dominios->error());
	} else {
		$aviso['exito'][] = array('dominio' => $_REQUEST['dominio'], 'texto' => 'El dominio se ha podido agregar con &eacute;xito');
	}
	$aviso['accion'] = $accion;
	$aviso = json_encode($aviso);
	$session->setFlash($aviso);

	header("Location: $url");
	exit;
}


// Modificar
if ($accion == 'modificar') {
	$id = $dominios->modificar($_REQUEST['dominio'], $data);
	$url = ($listar_dominios_url = $session->get('dominios_listar'))? $listar_dominios_url : '/sic/plugins/dominios/';
	if (!$id) {
		$aviso['error'][] = array('dominio' => $_REQUEST['dominio'], 'texto' => $dominios->error());
	} else {
		$aviso['exito'][] = array('dominio' => $_REQUEST['dominio'], 'texto' => 'El dominio se ha podido modificar con &eacute;xito');
	}

	$aviso['accion'] = $accion;
	$aviso = json_encode($aviso);
	$session->setFlash($aviso);
	// Redirecciono a donde estaba
	header("Location: ".$_POST['redirect']);
//	header("Location: $url");
	exit;
}


// Ver
if ($accion == 'ver') {
	$dominio = $dominios->datos($id);
}
	

// Listar
if ( ($accion == 'listar') || ($accion == 'buscar') ) {

	// Almaceno la url para poder redireccionar
	$session->set('dominios_listar', $_SERVER['REQUEST_URI']);

	// Aplico los filtros
	foreach ($criterios as $key_criterio => $value_criterio) {
		if (isset($params[$key_criterio])) {
			$filtros[$key_criterio] = str_replace('|param|', $params[$key_criterio], $value_criterio['filtro']);
		}
	}

	// Armo las opciones para la funcion listar
	$rpp = ($params['items']) ? $params['items'] : 50;
	$page = ($params['pagina']) ? $params['pagina'] : 1;
	$opciones  = array(
		'rpp' => $rpp,
		'page' => $page,
		'filtros' => $filtros
	);

	// Obtengo el listado
	$dominios_listado = $dominios->listar($opciones);
	
	// Agrego el enlace al detalle
	foreach ($dominios_listado['data'] as $key_dominio => $value_dominio) {
		$dominios_listado['data'][$key_dominio]['link'] = '/sic/plugins/dominios/editar/' . $value_dominio['id_dominio'];
	}
	
	// Armamos la URL que van a tener los botones
//	$url_filtro = '/sic/plugins/dominios/listar/' . preg_replace('/items:(\d+)\/pagina:(\d+)\//', "", $params_guiones);
	$url_filtro = preg_replace('/items:(\d+)\/pagina:(\d+)\//', "", $_SERVER['REQUEST_URI']);

	// Armo el paginador con: URL base, pagina actual, resultados por pagina, pagina actual
	$paginador = Funciones::paginar($url_filtro, $rpp, $dominios_listado['resultados'], $page);
	
	// Armo los carteles de filtros
	foreach ($filtros as $key_filtro => $value_filtro) {
		$cartel[] = array(
			'filtro' => $key_filtro,
			'valor' => $params[$key_filtro],
			'url' => preg_replace('/' . $key_filtro . ':([^\\/]+)\\/?/', '', $url_filtro)
		);
	};

}

// EDITAR
if ($accion == 'editar') {
	if (!$id) {
		$form = 'agregar';
	} else {
		$form = 'modificar';
		$dominio = $dominios->datos($id);
	}
}


// FINALIZAR
if ($accion == 'finalizar') {
//error_reporting(E_ALL);
	// Dominios seleccionados
	$seleccionados = $_REQUEST['info']['dominios'];
	$url = $_REQUEST['url'];
//	$url = $_SERVER['REQUEST_URI'];
	foreach ($seleccionados as $dominio) {
		if (!$dominios->finalizado($dominio)) {
			$aviso['error'][] = array('dominio' => $dominio, 'texto' => $dominios->error());
		} else {
			$aviso['exito'][] = array('dominio' => $dominio, 'texto' => 'El dominio se ha podido marcar como finalizado con &eacute;xito');
		}
	}
	$aviso['accion'] = 'finalizar';
	$aviso = json_encode($aviso);
	$session->setFlash($aviso);
//echo '<pre>'.print_r($_REQUEST, true).'</pre>';
	header("Location: ".$_REQUEST['url']);
	header("Location: $url");
	exit;
}

// Incluyo la interfaz
include('includes/tpl/header.tpl.php');
include('includes/tpl/dominios.tpl.php');
include('includes/tpl/footer.tpl.php');
?>
